package com.tianji.learning.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tianji.common.domain.dto.PageDTO;
import com.tianji.learning.domain.dto.NoteUpdateDto;
import com.tianji.learning.domain.dto.NotesDto;
import com.tianji.learning.domain.po.Noes;
import com.tianji.learning.domain.query.AdminNotesQuery;
import com.tianji.learning.domain.query.NotesQuery;
import com.tianji.learning.domain.vo.AdminNoteVo;
import com.tianji.learning.domain.vo.AdminNotesPageVo;
import com.tianji.learning.domain.vo.NotesPageVo;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author xzh
 * @since 2024-03-27
 */
public interface INoesService extends IService<Noes> {

    /**
     * 保存学习笔记
     * @param dto
     */
    void saveNote(NotesDto dto);

    /**
     * 采集笔记
     * @param id
     */
    void saveGatheredNoteById(Long id);

    /**
     * 取消采集笔记
     * @param id
     */
    void removeGatheredNoteById(Long id);


    /**
     * 编辑笔记
     * @param id
     * @param dto
     */
    void updateNoteById(Long id, NoteUpdateDto dto);

    /**
     * 删除笔记
     * @param id
     */
    void removeNoteById(Long id);

    /**
     * 笔记分页查询
     * @param query
     * @return
     */
    PageDTO<NotesPageVo> queryNotesPage(NotesQuery query);

    /**
     * 管理端笔记分页查询
     * @param query
     * @return
     */
    PageDTO<AdminNotesPageVo> adminQueryNotesPage(AdminNotesQuery query);

    /**
     * 管理端笔记详情
     * @param id
     * @return
     */
    AdminNoteVo adminQueryNote(Long id);

    /**
     * 隐藏或显示笔记
     * @param id
     * @param hidden
     */
    void hiddenOrNoHiddenNote(Long id, Boolean hidden);
}
